package com.gz.jdbc;

import java.sql.*;
import java.util.Properties;

public class Jdbc01 {
    public static void main(String[] args) throws SQLException {
        //前置工作:将mysql-connector-java.jar下载解压提取jar文件
        //在IDEA中创建libs文件，将jar复制到该文件下，并用ADD as library添加

        //1.注册驱动
            //com.mysql.jdbc.Driver是旧版，会有红色的警告显示
            Driver driver = new com.mysql.cj.jdbc.Driver();//创建driver对象

            //2.得到连接
            //(1)jdbc:mysql:// 规定好表示协议，通过jdbc的方式连接mysql
            //(2)localhost 主机，可以是ip地址
            //(3)3306表示mysql监听的窗口
            //(4)a0327 连接到mysql dbms 的哪个数据库
            //(5)mysql的连接本质就是之前学过的socket连接
            String url = "jdbc:mysql://localhost:3306/a0327";
            String username = "root";
            String password = "123456";
            //将用户名和密码放入到Properties对象
            Properties properties = new Properties();
            properties.setProperty("user", "root");
            properties.setProperty("password", "123456");
            Connection conn = driver.connect(url, properties);
            //也可以直接
            /*Class.forName("com.mysql.cj.jdbc.Driver");
            Connection connection = DriverManager.getConnection(url, properties);*/

//            Statement stmt = conn.createStatement();//存在sql注入，一般不用Statement
            //sql注入:用户的用户或密码用'1or...等一些词导致识别时与sql命令形成指令，语义混乱，最终登录的时候直接登录
            //导致恶意登录攻击数据库，即sql注入，所以一般不用Statement，而用PreparedStatement

            //3.执行sql
//            int i = stmt.executeUpdate("insert into bank values('3',99)");
//            if (i > 0) {
//                System.out.println("修改成功");
//            }
        String sql="select * from bank";
        PreparedStatement preparedStatement = conn.prepareStatement(sql);
        //如果要筛选，有筛选条件，要用通配符?，例如where id=? and b1=?
        //然后
        //preparedStatement.setString(1,"sda");
        //preparedStatement.setInt(2,34);
        //这样可以避免sql注入情况
        ResultSet resultSet = preparedStatement.executeQuery();//这里不能加sql语句
            while (resultSet.next()) {//让光标向后移动，若没有更多行，返回false
                String id=resultSet.getString("id");//获取该行第1列
                int b1=resultSet.getInt("b1");//获取该行第2列

                System.out.println(id+"\t"+b1);

            }

            //4.关闭连接资源
            resultSet.close();
            preparedStatement.close();
            conn.close();
    }

}
